In recent years, expert systems have been used in many applications which have traditionally been carried out using complex algorithmic approaches. These applications include medical diagnosis, financial analysis, electronics design, nuclear power plant monitoring and control, oil exploration, etc. Expert systems have also been used for interpretation, prediction, planning, monitoring, debugging, repair, and instruction. The surge in popularity of expert systems is mainly due to their simplicity in modeling complicated systems by Production Rules (i.e. IF/THEN rules) and to their capability in recommending appropriate actions by inference (or search).
A second known method of handling applications of the type mentioned above utilizes so-called "fuzzy logic", which makes use of fuzzy sets and fuzzy relational equations. In fuzzy set theory, quantifiers such as "for many" and "for a few" are used to relate elements of different sets. Fuzzy set theory, then, is useful in those situations in which data and relationships cannot be written in crisp mathematical terms. Simplicity and speed of design are two major advantages of fuzzy systems. Once an engineer has defined the variables and fuzzy sets, using intuition and experience, the design of a fuzzy logic control system prototype can be completed in a relatively short time.
A third known method of handling the above types of applications uses conventional artificial neural networks. An artificial neural network can be considered as a network of neuron-like units operating on data "all-at-once" rather than "step-by-step" as in a conventional computation. With neural networks, the problem of control can often be viewed as a pattern-recognition problem, wherein the patterns to be recognized are mappings of measured signals for "change" into calculated controls for "action". The ability to learn from experience to provide ever-improving performance is an advantage in using artificial neural networks for implementation of an intelligent controller. However, known artificial neural networks suffer from several significant problems, including the necessity for lengthy repetitive training of the networks, the fact that only local minimum solutions are generated, and the need for using trial and error techniques in structuring the number of neurons and layers of neurons in the network.
As will be seen, the present invention offers a unified approach which combines the best features of the above three techniques. But first let us review some of the characteristics of expert systems.
FIG. 1 shows a conceptual diagram illustrating a conventional expert system 1 which comprises two modules. A first module 2 is a Knowledge Base, which comprises a group of Production Rules (which typically are IF/THEN statements) and Facts. A second module 3 is an Inference Engine which makes decisions using the Production Rules and the given Facts. The expert system receives Inputs and generates Outputs using the Knowledge Base 2 and Inference Engine 3.
To date, however, the success of known expert systems has been somewhat diminished because of the following reasons:
First, known expert systems are too "brittle" for real-world applications which are noisy and uncertain. Specifically, the performance of an expert system rapidly degrades when the value of an Input is close to the Input bounds, as is illustrated by FIG. 2.
FIG. 2 shows a graph illustrating the brittleness of a conventional expert system. For example, if an Input x has a specific value x.sub.1, when we apply the following Production Rules the Output value y will be zero:
IF x is in set A (lying between x.sub.2 and x.sub.3), THEN y is 1.
IF x is not in set A, THEN y is 0.
Clearly, such brittleness is inappropriate for many applications (e.g. stock market investment, medical diagnosis, etc.). Although it is known to improve the robustness of an expert system by increasing the number of Production Rules, this slows down the decision-making process and aggravates maintenance problems (due to the sheer number of Production Rules to be kept track of).
Secondly, existing expert systems are usually too slow in decision-making for high-speed dynamic systems. This is because the Inference Engine needs to match the Facts to the Production Rules to make a decision. This pattern search can be very exhaustive, repetitive, and extremely time-consuming. This is illustrated, for example, in the extensive backward and/or forward chaining operations required, as discussed in Guide to Expert Systems, Donald A. Waterman, Edison-Wesley, 1986, Chapter 7, pages 66-69. An example of forward-chaining is shown in FIGS. 3-7 described below.
FIG. 3 shows a conceptual diagram of a Knowledge Base for a conventional expert system. This example of a Knowledge Base has two Production Rules and a set of Facts comprising x.sub.1, x.sub.2, and x.sub.3 representing the Inputs of the expert system. An Inference Engine (e.g. Inference Engine 3, FIG. 1) checks to see whether a given Rule is true by matching the set of Facts with the premise of such Rule. By "premise" is meant the clause immediately following the "IF" statement of the Production Rule. The "conclusion" is the clause immediately following the "THEN" statement.
First, still referring to FIG. 3, the Inference Engine checks to see whether Rule 1 is true by matching the given set of Facts with the premise of Rule 1. However, Rule 1 is not matched, because the Facts do not match its premise, since the Facts don't include z.sub.1.
Referring now to FIG. 4, the Inference Engine checks to see whether Rule 2 is true by matching the given set of Facts with the premise of Rule 2. Rule 2 is matched, because the Facts include x.sub.1 and x.sub.2. Because Rule 2 is fired, the set of Facts will now include z.sub.1, as shown in FIG. 5.
Referring to FIG. 6, the Inference Engine checks to see whether Rule 1 is true by matching the set of Facts with the premise of Rule 1. Rule 1 is matched, because the set of Facts includes z.sub.1 and x.sub.3. Thus the expert system has made a decision (y is true), so that the set of Facts will include y from now on, as shown by FIG. 7.
The foregoing example of an Inference Engine illustrates the known technique of forward-chaining, which is very slow, because it is necessary to check all the rules. It will be appreciated that the known technique of backward-chaining is more efficient but involves a more complicated Inference Engine.
Because known expert systems are both brittle and relatively slow, they are rarely used in real-time applications.
Therefore, there is a substantial need for an expert system that is both robust enough and fast enough to handle a wide spectrum of business and real-time applications.